package saves;

import game.GalaxyGenerator;

public class Estrela extends CorpoCeleste {

    private static final long serialVersionUID = 1248992228368065545L;
    private float lum; //10^26 watts (0 informação desconhecida)
    private int tipo; //-1 desconhecido

    @SuppressWarnings("unused")
    private Estrela() {
    }

    public Estrela(String nome, int tipo, float raio, float massa) {
        super(nome, massa, raio);
        this.setNome(nome);
        this.setRaio(raio);
        this.setMassa(massa);
        this.tipo = tipo;
        this.lum = gerarLuminosidade(tipo);
    }

    public float getLuminosidade() {
        return this.lum;
    }

    public static int generateTipo(float massa, float raio) {
        float mr = massa * raio / 50000000000f; //Converter de 10^-10 parsecs e 10^20 kg para Ms e Rs
        if (mr <= 0.2)
            return 6;
        if (mr <= 0.72)
            return 5;
        if (mr <= 1.21)
            return 4;
        if (mr <= 2.38)
            return 3;
        if (mr <= 6.51)
            return 2;
        if (mr <= 126)
            return 1;
        return 0;
    }

    public int getTipo() {
        return this.tipo;
    }

    public static float gerarLuminosidade(int t) {
        if (t == 6)
            return GalaxyGenerator.gerarFloat(0.05f, 0.025f);
        if (t == 5)
            return GalaxyGenerator.gerarFloat(0.5f, 0.25f);
        if (t == 4)
            return GalaxyGenerator.gerarFloat(1.2f, 0.6f);
        if (t == 3)
            return GalaxyGenerator.gerarFloat(6f, 3f);
        if (t == 2)
            return GalaxyGenerator.gerarFloat(40f, 20f);
        if (t == 1)
            return GalaxyGenerator.gerarFloat(20000f, 10000f);
        return GalaxyGenerator.gerarFloat(1000000f, 10000f); //0
    }
}
